home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
basic
/
6300gray.zip
/
GRAYTEST.BAS
< prev
next >
Wrap
BASIC Source File
|
1988-08-12
|
11KB
|
220 lines
10 REM This program draws a gray scale bar centered in the middle of the
12 REM screen of gray scale patterns simulating gray levels from 0 through 15.
14 REM Each pattern consists of a 5 by 3 array of pixels. The reason for
16 REM choosing a 5 by 3 array is that a gray scale image of 128 by 128 of
18 REM them will just fill the screen of a PC6300 (640 x 400). The 5 by 3
20 REM array is stored in an integer array, called patternx (x is a single
22 REM hexadecimal digit in the range 0..F), of 4 elements defined as follows
24 REM
26 REM patternx(0) = width of array (5)
28 REM patternx(1) = heighth of array (3)
30 REM patternx(2) = first two bytes of array
32 REM patternx(3) = second two bytes of array
34 REM
36 REM Here is how the array is stored in patternx(2) and patternx(3); for
38 REM instance, if pixel 9 is on then bit C of patternx(2) is set.
40 REM
42 REM ARRAY
44 REM ┌───┬───┬───┬───┬───┐
46 REM │ 1 │ 2 │ 3 │ 4 │ 5 │
48 REM ├───┼───┼───┼───┼───┤
50 REM │ 6 │ 7 │ 8 │ 9 │10 │
52 REM ├───┼───┼───┼───┼───┤
54 REM │11 │12 │13 │14 │15 │
56 REM └───┴───┴───┴───┴───┘
58 REM
60 REM HIGH BYTE PATTERNX(2) LOW BYTE
62 REM ┌───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┐
64 REM │ 6 │ 7 │ 8 │ 9 │10 │ │ │ │ │ 1 │ 2 │ 3 │ 4 │ 5 │ │ │ │
66 REM └───┴───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┴───┘
68 REM F E D C B A 9 8 7 6 5 4 3 2 1 0
70 REM
72 REM
74 REM HIGH BYTE PATTERNX(3) LOW BYTE
76 REM ┌───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┐
78 REM │ │ │ │ │ │ │ │ │ │11 │12 │13 │14 │15 │ │ │ │
80 REM └───┴───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┴───┘
82 REM F E D C B A 9 8 7 6 5 4 3 2 1 0
84 REM
86 REM BASIC uses two's complement notation to store signed integers in the
88 REM range -32768 to 32767 so the table below gives the integer values
90 REM of the two array elements corresponding to each pixel in the array
92 REM
94 REM array patternx patternx array patternx patternx
96 REM pixel 2 3 pixel 2 3
98 REM ─────────────────────────── ───────────────────────────
100 REM 1 128 0 9 4096 0
102 REM 2 64 0 10 2048 0
104 REM 3 32 0 11 0 128
106 REM 4 16 0 12 0 64
108 REM 5 8 0 13 0 32
110 REM 6 -32768 0 14 0 16
112 REM 7 16384 0 15 0 8
114 REM 8 8192 0
116 REM
118 REM As an example of using this table, if an array had pixels 2, 5,
120 REM 6, 11 & 13 on then
122 REM
124 REM patternx(2) = 64 OR 8 OR -32768
126 REM = 64 + 8 + (-32768) (Think about this: can OR be
128 REM = -32696 replaced by + ? Yes! Why?)
130 REM patternx(3) = 128 OR 32
132 REM = 128 + 32
134 REM = 160
136 REM
138 REM All of the patterns used are now described. Pattern 0 is the array
140 REM with no pixels on and patterns 8 through 15 are the complements of
142 REM patterns 7 through 1, respectively. The description of patterns 1
144 REM through 7 is given along with the integer values stored in the
146 REM integer arrays describing the patterns.
148 REM
150 REM
152 REM ARRAY 1 PATTERNX PATTERNX
154 REM ┌───┬───┬───┬───┬───┐ 2 3
156 REM │ │ │ │ │ │
158 REM ├───┼───┼───┼───┼───┤ 8192 0
160 REM │ │ │ █ │ │ │
162 REM ├───┼───┼───┼───┼───┤
164 REM │ │ │ │ │ │
166 REM └───┴───┴───┴───┴───┘
168 REM
170 REM
172 REM ARRAY 2 PATTERNX PATTERNX
174 REM ┌───┬───┬───┬───┬───┐ 2 3
176 REM │ │ │ │ │ │
178 REM ├───┼───┼───┼───┼───┤ 8192 128
180 REM │ │ │ █ │ │ │
182 REM ├───┼───┼───┼───┼───┤
184 REM │ █ │ │ │ │ │
186 REM └───┴───┴───┴───┴───┘
188 REM
190 REM
192 REM ARRAY 3 PATTERNX PATTERNX
194 REM ┌───┬───┬───┬───┬───┐ 2 3
196 REM │ █ │ │ │ │ │
198 REM ├───┼───┼───┼───┼───┤ 2176 32
200 REM │ │ │ │ │ █ │
202 REM ├───┼───┼───┼───┼───┤
204 REM │ │ │ █ │ │ │
206 REM └───┴───┴───┴───┴───┘
208 REM
210 REM
212 REM ARRAY 4 PATTERNX PATTERNX
214 REM ┌───┬───┬───┬───┬───┐ 2 3
216 REM │ █ │ │ │ │ │
218 REM ├───┼───┼───┼───┼───┤ 2176 80
220 REM │ │ │ │ │ █ │
222 REM ├───┼───┼───┼───┼───┤
224 REM │ │ █ │ │ █ │ │
226 REM └───┴───┴───┴───┴───┘
228 REM
230 REM
232 REM ARRAY 5 PATTERNX PATTERNX
234 REM ┌───┬───┬───┬───┬───┐ 2 3
236 REM │ █ │ │ │ █ │ │
238 REM ├───┼───┼───┼───┼───┤ 8336 72
240 REM │ │ │ █ │ │ │
242 REM ├───┼───┼───┼───┼───┤
244 REM │ │ █ │ │ │ █ │
246 REM └───┴───┴───┴───┴───┘
248 REM
250 REM
252 REM ARRAY 6 PATTERNX PATTERNX
254 REM ┌───┬───┬───┬───┬───┐ 2 3
256 REM │ █ │ │ │ █ │ │
258 REM ├───┼───┼───┼───┼───┤ 10384 80
260 REM │ │ │ █ │ │ █ │
262 REM ├───┼───┼───┼───┼───┤
264 REM │ │ █ │ │ █ │ │
266 REM └───┴───┴───┴───┴───┘
268 REM
270 REM
272 REM ARRAY 7 PATTERNX PATTERNX
274 REM ┌───┬───┬───┬───┬───┐ 2 3
276 REM │ █ │ │ │ █ │ │
278 REM ├───┼───┼───┼───┼───┤ 26768 80
280 REM │ │ █ │ █ │ │ █ │
282 REM ├───┼───┼───┼───┼───┤
284 REM │ │ █ │ │ █ │ │
286 REM └───┴───┴───┴───┴───┘
288 REM
290 REM %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
292 REM % Beginning of program to draw a gray %
294 REM % bar in the middle of the screen %
296 REM %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
298 DEFINT I, J, X, Y, P
300 DIM PATTERN0(3), PATTERN1(3), PATTERN2(3), PATTERN3(3)
302 DIM PATTERN4(3), PATTERN5(3), PATTERN6(3), PATTERN7(3)
304 DIM PATTERN8(3), PATTERN9(3), PATTERNA(3), PATTERNB(3)
306 DIM PATTERNC(3), PATTERND(3), PATTERNE(3), PATTERNF(3)
308 REM %%%%%%%%%%%%%%%%%%%
310 REM % Function Key 10 %
312 REM % returns to DOS %
314 REM %%%%%%%%%%%%%%%%%%%
316 KEY 10,"": KEY OFF
318 KEY (10) ON : ON KEY(10) GOSUB 446
320 SCREEN 100
322 COLOR 7
324 CLS
326 PATTERN0(0)=5 : PATTERN0(1) = 3
328 PATTERN1(0)=5 : PATTERN1(1) = 3
330 PATTERN2(0)=5 : PATTERN2(1) = 3
332 PATTERN3(0)=5 : PATTERN3(1) = 3
334 PATTERN4(0)=5 : PATTERN4(1) = 3
336 PATTERN5(0)=5 : PATTERN5(1) = 3
338 PATTERN6(0)=5 : PATTERN6(1) = 3
340 PATTERN7(0)=5 : PATTERN7(1) = 3
342 PATTERN8(0)=5 : PATTERN8(1) = 3
344 PATTERN9(0)=5 : PATTERN9(1) = 3
346 PATTERNA(0)=5 : PATTERNA(1) = 3
348 PATTERNB(0)=5 : PATTERNB(1) = 3
350 PATTERNC(0)=5 : PATTERN